고급 셰이더 언어
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
고급 셰이더 언어(HLSL)는 Direct3D에서 프로그래밍 가능한 셰이더를 작성하기 위해 사용되는 고수준 언어이다. Direct3D 8의 어셈블리 언어 셰이더의 한계를 극복하기 위해 C/C++와 유사한 문법으로 개발되었으며, Direct3D 9에서 처음 도입되었다. HLSL은 버텍스 셰이더, 픽셀 셰이더, 지오메트리 셰이더, 컴퓨트 셰이더 등 다양한 파이프라인 스테이지를 프로그래밍하는 데 사용되며, 셰이더 모델에 따라 지원되는 기능이 다르다. HLSL은 C/C++와 유사한 문법을 가지면서도 그래픽스 프로그래밍에 특화된 기능들을 제공하며, 셰이더 모델의 발전에 따라 기능이 지속적으로 확장되고 있다. HLSL 프로그램은 주로 C++ 애플리케이션에서 Direct3D API를 사용하여 관리되며, DirectX, WPF, Direct2D 등 다양한 환경에서 활용된다.
더 읽어볼만한 페이지
- 셰이더 언어 - GLSL
GLSL은 OpenGL에서 GPU를 프로그래밍하기 위한 셰이딩 언어이며, 렌더링 파이프라인을 제어하고, C 언어와 유사한 문법으로 셰이더 단계와 데이터 형식을 지원하며, 실시간 3D 그래픽 구현에 기여한다. - 셰이더 언어 - Cg (프로그래밍 언어)
Cg는 엔비디아와 마이크로소프트가 GPU 프로그래밍을 위해 개발한 고수준 셰이딩 언어로, GLSL, HLSL과 유사하며 CUDA 환경에도 영향을 미쳤고 현재도 활용되고 있다. - C 프로그래밍 언어 계열 - C (프로그래밍 언어)
C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다. - C 프로그래밍 언어 계열 - 펄
펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다. - 3차원 컴퓨터 그래픽스 - 픽셀 셰이더
픽셀 셰이더는 렌더링 과정에서 픽셀의 색상을 계산하여 최종 모습을 결정하며, 텍스처, 빛, 그림자 등의 시각 효과를 구현하고, 다양한 언어로 프로그래밍되며, 그래픽 카드 및 칩셋은 지원하는 버전을 가진다. - 3차원 컴퓨터 그래픽스 - 모션 캡처
모션 캡처는 물체의 움직임을 디지털 데이터로 변환하는 기술로서, CG 영상 제작에 활용되며, 센서 부착 방식에서 마커리스 방식으로 발전하여 다양한 분야에 응용된다.
고급 셰이더 언어 |
---|
2. 개발 경위
Direct3D 7까지는 그래픽스 칩(GPU)에 탑재된 고정 파이프라인 및 하드웨어 기능을 활용하여 3D 그래픽스 장면을 구축했지만, 그래픽스 표현의 유연성을 향상시키기 위해 Direct3D 8에서는 프로그래밍 가능 셰이더가 탑재되었다[21]。 이를 통해 그래픽스 애플리케이션 개발자가 그래픽스 렌더링 알고리즘을 소프트웨어로 커스터마이즈할 수 있게 되었다. 그러나 Direct3D 8에서 사용할 수 있는 셰이더 언어는 어셈블리 언어 (저수준 언어)였기 때문에 개발 효율성 및 프로그램 코드의 재사용성에 한계가 있었다. 이를 해소하기 위해 C/C++와 유사한 선언문과 제어문 등의 표기를 가능하게 한 고수준 언어 HLSL이 개발되었다. HLSL은 Direct3D 9에서 처음 도입되었으며, 이후에도 Direct3D와 함께 기능 확장이 계속되고 있다.
HLSL로 프로그래밍 가능한 그래픽스 파이프라인 스테이지는 해당 다이렉트3D 버전 및 셰이더 모델에 따라 다르다.
HLSL의 기본 문법은 C/C++에 준하지만, 그래픽스 프로그래밍에 적합한 벡터, 행렬형 및 함수를 갖추고 있다. 수학 함수 중에는 C/C++ 표준 라이브러리와 동일한 것도 포함된다. Direct3D 10에서는 API의 대폭적인 설계 변경으로, Direct3D 9용 HLSL과 비교하여 Direct3D 10 이후용 HLSL에서는 객체 지향에 기반한 언어 사양의 재설계가 이루어져, 많은 사양 변경이 이루어졌다[27]。
cpp
HLSL 프로그램은 주로 호스트가 되는 C++ 애플리케이션 프로그램 코드에서 Direct3D API를 사용하여 입력과 출력을 관리해야 하므로 단독으로 동작시킬 수 없다. 단독 컴파일러는 마이크로소프트에서 무상으로 제공하는 DirectX SDK (또는 버전 8.0 이후의 Windows SDK)에 포함되어 있다. 전용 HLSL 컴파일러인 fxc.exe로 출력되는 것은 그래픽스 하드웨어 벤더에 의존하지 않는 공통 바이트코드 (중간 표현)이므로, 한 번 컴파일해두면 다른 하드웨어에서도 (컴파일 시에 예상되었던 기능을 충족하는 한) 동작시킬 수 있다[30]。HLSL 프로그램을 지원하는 것은 Direct3D 9 이후를 지원하는 시스템에 한정되므로, 이전에는 윈도우 OS 및 Xbox 360 이후의 Xbox 시리즈가 주요 동작 환경이었지만, Vulkan용 셰이더 프로그램을 사전 컴파일하여 중간 표현 SPIR-V를 생성하는 컴파일러 glslangValidator[31]가 GLSL과 HLSL을 모두 지원하게 되면서, 크로스 플랫폼에서의 HLSL 활용이 진행되고 있다.
HLSL 자체는 셰이더 함수 및 각 셰이더 스테이지의 엔트리 포인트(일명 메인 함수)를 기술하는 데 사용되지만, 여러 셰이더 스테이지를 함께 관리·적용하는 "이펙트"라고 불리는 구조도 존재한다. 예를 들어, 두 개의 정점 셰이더 엔트리 포인트 VS1(), VS2()와 두 개의 픽셀 셰이더 엔트리 포인트 PS1(), PS2()를 단일 HLSL 소스 프로그램 파일(통상 .fx 확장자가 붙고, 이펙트 파일이라고 불린다)에 기술할 수 있다. 또한, VS1+PS1, VS2+PS2, VS1+PS2, VS2+PS1과 같은 셰이더 스테이지 조합(패스) 외에도 각종 렌더링 상태 설정을 이펙트 파일 내에 기술하여 연관시킬 수 있다. 이펙트를 다루는 API는 Direct3D 10의 코어 라이브러리 또는 Direct3D 9/11의 익스텐션 라이브러리(D3DX)에 준비되어 있으며, 렌더링 파이프라인 관리를 C++ 코드로부터 분리할 수 있다.
WPF는 윈도우 데스크톱 애플리케이션 프레임워크 중 하나로, 그래픽 렌더링에 Direct3D를 사용하며 GUI 위젯에 블러(흐림)나 드롭 섀도와 같은 효과(필터)를 적용할 수 있다. 또한 WPF에서는 HLSL로 작성한 픽셀 셰이더를 사용하여 사용자 정의 효과를 적용할 수도 있다.
Direct3D 지원 하드웨어(그래픽 카드)의 세대에 따라 GPU에서 하드웨어 레벨로 실행 가능한 셰이더 프로그램의 사양(제약, 기능 등)이 다르다. 이 사양을 '''셰이더 모델'''이라고 하며, 새로운 세대의 셰이더 모델을 지원하는 하드웨어는 기본적으로 이전 세대의 셰이더 모델도 지원한다[43]. 단, 벤더별로 확장된 2.0a/2.0b 등은 예외이다.
GDC 2016에서는 DirectX 12의 향후 발전, 그리고 새로운 차기 DirectX와 셰이더 모델 6의 개발에 관해 언급이 있었고, HLSL 언어 사양에도 큰 기능 추가가 예정되어 있다는 것이 발표되었다[22]。 셰이더 모델 6.0에서는 ''Wave''라고 불리는 Single instruction, multiple threads|SIMT영어 스레드 그룹의 개념과 각 그룹 내 데이터 교환(셔플)을 위한 내장 명령이 도입되어, NVIDIA GPU의 ''Warp'' 및 AMD GPU의 ''Wavefront''를 표준화했다[23]。
3. 프로그래밍 가능 파이프라인 스테이지
Direct3D 버전 셰이더 모델 프로그래밍 가능 스테이지 Direct3D 9 1.x-3.0 버텍스 셰이더, 픽셀 셰이더 Direct3D 10.x 4.x 버텍스 셰이더, 지오메트리 셰이더, 픽셀 셰이더 Direct3D 11.x/12 5.x 버텍스 셰이더, 헐 셰이더, 도메인 셰이더, 지오메트리 셰이더, 픽셀 셰이더, 컴퓨트 셰이더
컴퓨트 셰이더는 그래픽스 파이프라인과 독립적으로 동작시킬 수 있다.
버텍스 셰이더는 응용 프로그램에서 제공(입력)되는 각 버텍스에 대해 실행되며, 주로 객체 공간에서 시점 공간으로의 버텍스 좌표 변환, 텍스처 좌표 생성, 그리고 버텍스의 접선, 종법선, 법선 벡터와 같은 광선 계수 계산 등의 처리를 담당한다. 버텍스 셰이더를 통해 버텍스 그룹(삼각형의 경우 일반적으로 3개)이 입력될 때 출력 좌표는 해당 영역 내에서 화면상의 픽셀을 결정하기 위해 보간된다. 이 처리는 래스터화로 알려져 있다. 이러한 각 픽셀은 픽셀 셰이더를 통과하여 결과적으로 화면상의 각 점의 색상이 계산된다.
Direct3D 10/11/12 지원 하드웨어에서 Direct3D 10/11/12 인터페이스를 사용하는 애플리케이션은 버텍스 셰이더 스테이지 다음에 지오메트리 셰이더를 지정할 수도 있다. 지오메트리 셰이더는 래스터화 전에 프리미티브의 증감 및 종류 변경을 수행할 수 있다.
Windows 10 2018년 10월 업데이트(버전 1809)에서는 DirectX Raytracing영어(DXR)이라고 불리는 실시간 레이 트레이싱 기술이 구현되었다[25]。DXR을 하드웨어 수준에서 지원하는 GPU에서는 셰이더 모델 6.3의 레이 트레이싱 파이프라인을 기술하기 위한 HLSL 셰이더를 사용할 수 있다[26]。
4. 언어 기능
Direct3D 10 이후에는 HLSL에서 클래스를 정의하여, C++처럼 데이터(멤버 변수)와 동작(멤버 함수)을 연관시키는 것이 가능하지만, 접근 지정자에 의한 캡슐화나 상속 및 가상 함수와 같은 기능은 갖추고 있지 않다.
Direct3D 11에서는 셰이더의 조합 폭발 문제를 해소하기 위해, HLSL에서 인터페이스의 정의와 구현에 의한 다형성을 흉내 내는 "동적 셰이더 연결 (Dynamic Shader Linkage)"이라는 기능이 추가되었다[28]。
5. 코드 예시
// Shader Constants.
matrix TrWorldViewProj;
matrix TrWorld;
float4 LightPosition;
float3 EyePosition;
float4 DiffuseColor;
float4 SpecularColor;
float SpecularPower;
bool IsPhongModel;
struct BasicVSOutput
{
float4 Pos : SV_POSITION;
float3 WPos : TEXCOORD1;
float3 WNormal : NORMAL0;
};
typedef BasicVSOutput BasicPSInput;
// Vertex Shader Program.
BasicVSOutput BasicVS(float3 pos : POSITION0, float3 normal : NORMAL0)
{
BasicVSOutput output = (BasicVSOutput)0;
output.Pos = mul(float4(pos, 1), TrWorldViewProj);
output.WPos = mul(float4(pos, 1), TrWorld).xyz;
output.WNormal = mul(normal, (float3x3)TrWorld);
return output;
}
float4 CalcLambert(float3 light, float3 wnormal)
{
// Half Lambert.
float lambert = dot(light, wnormal);
lambert = lambert * 0.5f + 0.5f;
lambert *= lambert;
return lambert * DiffuseColor;
}
float4 BasicLambert(BasicPSInput input)
{
const float3 light = normalize(LightPosition.xyz - input.WPos);
const float3 normal = normalize(input.WNormal);
return CalcLambert(light, normal);
}
float4 BasicPhong(BasicPSInput input)
{
// Phong lighting with specular.
const float3 eye = normalize(EyePosition - input.WPos);
const float3 light = normalize(LightPosition.xyz - input.WPos);
const float3 halfway = normalize(light + eye);
const float3 normal = normalize(input.WNormal);
const float specular = pow(max(dot(normal, halfway), 0.0), SpecularPower);
return CalcLambert(light, normal) + specular * SpecularColor;
}
// Pixel Shader Program.
float4 BasicPS(BasicPSInput input) : SV_TARGET0
{
if (IsPhongModel)
{
return BasicPhong(input);
}
else
{
return BasicLambert(input);
}
}
```
위 코드는 Direct3D 10/11용 HLSL을 사용한 간단한 하프 램버트 조명 모델 및 퐁 조명 모델(Blinn-Phong)의 정점 셰이더 및 픽셀 셰이더 프로그램이다. 분기를 통해 조명 모델을 전환하지만, 이는 소위 우버 셰이더(uber-shader)이므로 실행 속도 효율성 등은 고려하지 않았다.
픽셀 셰이더를 통해 픽셀 단위의 정규화된 법선 벡터를 구함으로써, Direct3D 7 이전의 고정 기능 셰이더에서는 구현하기 어려웠던 픽셀 단위 조명(Per-Pixel lighting)을 쉽게 구현할 수 있게 되었다.
6. 지원 환경
애플리케이션 실행 시 HLSL 소스 코드를 컴파일하여 바이트코드를 생성하는 기능을 통합하기 위한 D3DCompiler 런타임도 제공된다[32]。
그 외에도 게임 엔진 Unity에서는 셰이더 프로그램의 기술에 HLSL이 사용되고 있다 (과거에는 Cg가 사용되었기 때문에 일부 흔적이 남아있다)[33][34]。윈도우 상에서 DirectCompute 기반 (DirectX 11 기반)의 컴퓨트 셰이더를 사용할 수 있지만, Cg는 컴퓨트 셰이더를 지원하지 않기 때문에, 컴퓨트 셰이더의 기술에는 처음부터 HLSL이 사용되었다[35]。Unity는 Cg/HLSL에서 GLSL로의 변환이 가능하므로, OpenGL 4.3이나 OpenGL ES 3.1의 컴퓨트 셰이더를 사용하는 경우에도 GLSL이 아닌 HLSL을 사용하는 것이 권장되었다[36]。
LLVM/Clang 기반의 HLSL 컴파일러 dxc.exe도 GitHub에서 개발이 진행되고 있다[37]。이것은 DirectX Intermediate Language (DXIL)라고 불리는 다른 중간 언어 코드[38]를 생성하지만, 지금까지 fxc.exe가 생성하는 바이트코드 (DXBC)와는 호환성이 없다.
7. 이펙트
8. WPF 및 Direct2D 이펙트
WPF 3.5까지는 셰이더 모델 2.0의 픽셀 셰이더만 지원했지만, WPF 4에서는 셰이더 모델 3.0의 픽셀 셰이더도 사용할 수 있게 되었다.
9. 셰이더 모델
HLSL이 Direct3D에 탑재된 것은 버전 9 이후이지만, 셰이더 모델 2.0 이후가 아니어도 HLSL을 사용하여 셰이더 모델 1.x 레벨의 프로그램을 작성할 수 있다. Direct3D 10에서는 어셈블리 언어를 사용한 셰이더 프로그램 개발이 폐지되어, 셰이더 작성에는 HLSL만 사용할 수 있게 되었다[44].
셰이더 모델 3.0까지는 각 회사의 기능 지원에 차이가 있었다. 예를 들어, VTF(Vertex Texture Fetch, 정점 텍스처 페치) 기능은 엔비디아 하드웨어에서만 지원되었고, ATI 하드웨어에서는 지원되지 않았다. 반대로 부동 소수점 버퍼에서의 안티 앨리어싱 기능은 엔비디아 하드웨어에서는 지원되지 않고, ATI 하드웨어에서만 지원되었다[45] [46]. (DirectX 11에서 표준화되기 전) 테셀레이션 기능[47] 역시 ATI 하드웨어에서만 지원되었다[48] [49] [50]. 이러한 벤더별 기능 차이는 Direct3D 10 이후 요구 사양이 엄격해지면서 어느 정도 해소되었다[51].
Direct3D API 버전에 따라 사용 가능한 셰이더 프로파일에 제한이 있다. Direct3D 10.1 API에서는 4.x 프로파일 외에 2.0 프로파일을 사용할 수 있고, Direct3D 11/12 API에서는 5.x 및 4.x 프로파일 외에 2.0 프로파일을 사용할 수 있지만, 3.0 프로파일은 사용할 수 없다[52] [53] [54] [55].
9. 1. DirectX 버전과 각 셰이더 스테이지
Direct3D 프로그래밍 가능 셰이더를 실행하려면 Direct3D 8 이상을 지원하는 하드웨어가 필요하다. Direct3D 지원 하드웨어(그래픽 카드)의 세대에 따라 GPU에서 하드웨어 레벨로 실행 가능한 셰이더 프로그램의 사양(제약, 기능 등)이 다르다. 이 사양을 '''셰이더 모델'''이라고 하며, 새로운 세대의 셰이더 모델을 지원하는 하드웨어는 기본적으로 이전 세대의 셰이더 모델도 지원한다[43].
HLSL로 프로그래밍 가능한 그래픽스 파이프라인 스테이지는 해당 Direct3D 버전 및 셰이더 모델에 따라 다르다.
다음 표는 하드웨어가 지원하는 DirectX 버전과 해당 하드웨어가 지원하는 각 셰이더 스테이지의 최상위 버전 간의 관계를 나타낸다. 실행 가능한 셰이더 프로그램의 최대 명령 수, 레지스터 수, 리소스 슬롯 수 등은 새로운 버전일수록 커지며, 더 유연하고 긴 프로그램을 작성할 수 있게 된다.
DirectX 버전 | 픽셀 셰이더 | 버텍스 셰이더 | 지오메트리 셰이더 | 헐 셰이더 | 도메인 셰이더 | 컴퓨트 셰이더 |
---|---|---|---|---|---|---|
8.0 | 1.0, 1.1 | 1.0 | - | - | - | - |
8.1 | 1.2, 1.3, 1.4 | 1.1 | - | - | - | - |
9.0 | 2.0 | 2.0 | - | - | - | - |
9.0a | 2.0a | 2.0a | - | - | - | - |
9.0b | 2.0b | 2.0 | - | - | - | - |
9.0c | 3.0 | 3.0 | - | - | - | - |
10.0 | 4.0 | 4.0 | 4.0 | - | - | 4.0 |
10.1 | 4.1 | 4.1 | 4.1 | - | - | 4.1 |
11.0-11.2 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
11.3, 12 | 5.1 | 5.1 | 5.1 | 5.1 | 5.1 | 5.1 |
12 | 6.0 | 6.0 | 6.0 | 6.0 | 6.0 | 6.0 |
컴퓨트 셰이더는 DirectX 11에서 도입된 스테이지이며, 드라이버가 지원하면 DirectX 10.x 세대 하드웨어에서도 DirectX 11 API를 경유하여 기능 제한이 있는 컴퓨트 셰이더를 실행할 수 있다.
셰이더 모델 5.1[56]은 DirectX 12 API를 드라이버 레벨에서 지원하는 모든 하드웨어(기능 레벨 11_0 이상 필수)에서 사용할 수 있지만, Root Signature에 관한 기능은 DirectX 11.3에서는 사용할 수 없으며, DirectX 12 전용 기능이 된다[57]。
셰이더 모델 6.0[23]의 내장 함수는 기능 레벨 12_0의 요구 사항으로 추가되었다.
9. 2. 픽셀 셰이더 비교
9. 3. 버텍스 셰이더 비교
정점 셰이더 버전 | VS 1.1[14] | VS 2.0[7][14][8] | VS 2.0a[7][14][8] | VS 3.0[10][14] | VS 4.0[11], 4.1[12], 5.0[13] |
---|---|---|---|---|---|
명령 슬롯 수 | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
최대 명령 실행 수 | 128 | 1024 | 65536 | 65536 | 무제한 |
분기 예측 | 아니요 | 아니요 | 예 | 예 | 예 |
임시 레지스터 | 12 | 12 | 16 | 32 | 4096 |
상수 레지스터 수 | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16×4096 |
주소 레지스터 | 예 | 예 | 예 | 예 | 예 |
정적 흐름 제어 | 아니요 | 예 | 예 | 예 | 예 |
동적 흐름 제어 | 아니요 | 아니요 | 예 | 예 | 예 |
동적 흐름 제어 깊이 | 24 | 24 | 64 | ||
정점 텍스처 페치 | 아니요 | 아니요 | 아니요 | 예 | 예 |
텍스처 샘플러 수 | 4 | 128 | |||
지오메트리 인스턴싱 지원 | 아니요 | 아니요 | 아니요 | 예 | 예 |
비트 연산자 | 아니요 | 아니요 | 아니요 | 아니요 | 예 |
네이티브 정수 | 아니요 | 아니요 | 아니요 | 아니요 | 예 |
9. 4. 지원 하드웨어 개요
다음은 각 그래픽 카드 제조사별 셰이더 모델 지원 현황을 나타낸 표이다. 셰이더 모델 1.x부터 6.0까지, 그리고 DirectX 버전 8.0부터 12까지의 지원 현황을 보여준다.DirectX 버전 | 픽셀 셰이더 | 버텍스 셰이더 | 지오메트리 셰이더 | 헐 셰이더 | 도메인 셰이더 | 컴퓨트 셰이더 |
---|---|---|---|---|---|---|
8.0 | 1.0, 1.1 | 1.0 | - | - | - | - |
8.1 | 1.2, 1.3, 1.4 | 1.1 | - | - | - | - |
9.0 | 2.0 | 2.0 | - | - | - | - |
9.0a | 2.0a | 2.0a | - | - | - | - |
9.0b | 2.0b | 2.0 | - | - | - | - |
9.0c | 3.0 | 3.0 | - | - | - | - |
10.0 | 4.0 | 4.0 | 4.0 | - | - | 4.0 |
10.1 | 4.1 | 4.1 | 4.1 | - | - | 4.1 |
11.0-11.2 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
11.3, 12 | 5.1 | 5.1 | 5.1 | 5.1 | 5.1 | 5.1 |
12 | 6.0 | 6.0 | 6.0 | 6.0 | 6.0 | 6.0 |
컴퓨트 셰이더는 DirectX 11에서 도입되었으며, DirectX 10.x 하드웨어에서도 DirectX 11 API를 통해 제한적으로 사용 가능하다. 셰이더 모델 5.1[56]은 DirectX 12를 지원하는 하드웨어(기능 레벨 11_0 이상)에서 사용 가능하지만, 일부 기능은 DirectX 12에서만 사용 가능하다.[57] 셰이더 모델 6.0[23]은 기능 레벨 12_0에서 추가되었다.
다음 표는 각 제조사의 그래픽 카드별 Direct3D 프로그래밍 가능 셰이더 지원 현황을 나타낸다. 일반적으로 칩은 상위 호환성을 가지므로, 예를 들어 PS 3.0 지원 칩은 PS 2.0과 PS 1.1도 지원한다.
PS 버전 | DirectX 버전 | 3Dlabs | AMD(구 ATI) | 인텔 | Matrox | NVIDIA | S3 Graphics | SiS | XGI |
---|---|---|---|---|---|---|---|---|---|
1.0/1.1 | 8.0 | - | - | - | - | GeForce 3 시리즈 | - | Xabre-Series | - |
1.2 | 8.0a | Wildcat VP | - | - | - | - | - | - | - |
1.3 | 8.0a | - | - | - | Parhelia-Series | GeForce 4 Ti/Go 시리즈 | - | Mirage 2 (소프트웨어 에뮬레이션으로 지원) | - |
1.4 | 8.1 | - | Radeon R200 (8500-9250) | - | - | - | - | Mirage 3 | Volari V3 시리즈 (V3XT 제외) |
2.0 | 9.0 | Wildcat Realizm | Radeon R300 (9500-9800, X300-X600) | Intel GMA 900 | - | GeForce FX 시리즈 | DeltaChrome, GammaChrome, Chrome S2x 시리즈, Chrome9 HC | Mirage 3+ | Volari V3XT, Volari V5 시리즈, Volari V8 시리즈, Volari 8300, Volari XP10 |
2.0a | 9.0a | - | - | - | - | GeForce FX 시리즈 | - | - | - |
2.0b | 9.0b | - | Radeon R420 (X700-X850) | - | - | - | - | - | |
3.0 | 9.0c | - | Radeon X1xxx | Intel GMA 950 (3.0은 소프트웨어 에뮬레이션), 3000, 3100 | M Series | GeForce 6 시리즈, GeForce 7 시리즈 | - | - | - |
4.0 | 10 | - | Radeon HD 2xxx | Intel GMA X3100 이후 시리즈 | - | GeForce 8 시리즈, GeForce 9 시리즈 | - | - | - |
4.1 | 10.1 | - | Radeon HD 3xxx, Radeon HD 4xxx | HD Graphics 2000/3000 | - | GeForce GT 200 시리즈 | Chrome400/500 | - | - |
5.0 | 11 | - | Radeon HD 5xxx | HD Graphics 2500/4000 | - | GeForce GTX 400 시리즈 | - | - | - |
게임 콘솔의 GPU 셰이더 모델 지원 정보는 다음과 같다.
- Xbox: SM1.x 또는 파생형
- Xbox 360, PlayStation 3: SM3.0 또는 파생형
- Wii U: SM4.0 또는 파생형
- Xbox One, PlayStation 4: SM5.0 또는 파생형[64]
OpenGL 지원 레벨은 다음과 같이 DirectX 버전 및 셰이더 모델과 대략적으로 관련된다.
- OpenGL 2.x - Direct3D 9
- OpenGL 3.x - Direct3D 10
- OpenGL 4.x - Direct3D 11
참조
[1]
웹사이트
Writing HLSL Shaders in Direct3D 9
https://docs.microso[...]
2021-02-22
[2]
웹사이트
High-level shader language (HLSL)
https://docs.microso[...]
2021-02-22
[3]
웹사이트
Fusion Industries :: Cg and HLSL FAQ ::
https://web.archive.[...]
2012-08-24
[4]
웹사이트
Shader Model 5.1 Objects
https://docs.microso[...]
2021-02-22
[5]
웹사이트
HLSL Shader Model 6.0
https://docs.microso[...]
2021-02-22
[6]
웹사이트
Pixel Shader Differences
https://docs.microso[...]
2020-08-19
[7]
웹사이트
Introduction to the DirectX 9 High-Level Shader Language
https://docs.microso[...]
2003-07
[8]
웹사이트
NVIDIA Introduces GeForce FX (NV30)
https://www.anandtec[...]
2021-02-22
[9]
웹사이트
ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives
https://www.anandtec[...]
2021-02-22
[10]
문서
Shader Model 3.0
NVIDIA Developer Technology Group
2004
[11]
문서
The Direct3D 10 System
Microsoft Corporation
2006
[12]
웹사이트
Registers - ps_4_1
https://docs.microso[...]
2019-08-23
[13]
웹사이트
Registers - ps_5_0
https://docs.microso[...]
2019-08-23
[14]
웹사이트
Vertex Shader Differences
https://docs.microso[...]
2020-08-19
[15]
웹사이트
Programming guide for HLSL - Win32 apps | Microsoft Learn
https://learn.micros[...]
[16]
웹사이트
High-level shader language (HLSL) - Win32 apps | Microsoft Learn
https://learn.micros[...]
[17]
웹사이트
Writing HLSL Shaders in Direct3D 9 - Win32 apps | Microsoft Learn
https://learn.micros[...]
[18]
웹사이트
Interfaces and Classes - Win32 apps | Microsoft Learn
https://learn.micros[...]
[19]
웹사이트
上位レベル シェーダ言語 | Microsoft Learn
https://learn.micros[...]
[20]
웹사이트
HLSL | Microsoft Learn
https://learn.micros[...]
[21]
웹사이트
Shader Models vs Shader Profiles - Win32 apps | Microsoft Learn
https://learn.micros[...]
[22]
웹사이트
[GDC 2016]シェーダモデル6.0がやってくる! Microsoftが語った「次のDirectX」 - 4Gamer.net
https://www.4gamer.n[...]
[23]
웹사이트
HLSL Shader Model 6.0 - Win32 apps | Microsoft Learn
https://learn.micros[...]
[24]
웹사이트
noise - Win32 apps | Microsoft Learn
https://learn.micros[...]
[25]
웹사이트
Windows 10がついに「DirectX Raytracing」(DXR)をサポート――本日公開の「October 2018 Update」で
https://www.4gamer.n[...]
[26]
웹사이트
Direct3D 12 Raytracing HLSL Shaders - Win32 apps | Microsoft Learn
https://learn.micros[...]
[27]
웹사이트
Direct3D 9 から Direct3D 10 への移行時の考慮事項 (Direct3D 10)
http://msdn.microsof[...]
[28]
웹사이트
動的リンク
https://msdn.microso[...]
[29]
웹사이트
.hlsli Extension - List of programs that can open .hlsli files
http://extension.nir[...]
[30]
웹사이트
Direct3D 9 でのシェーダーの使用 | Microsoft Learn
https://learn.micros[...]
[31]
웹사이트
GitHub - KhronosGroup/glslang: Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
https://github.com/K[...]
[32]
웹사이트
HLSL, FXC, and D3DCompile | Games for Windows and the DirectX SDK blog
https://walbourn.git[...]
[33]
웹사이트
Unity での HLSL - Unity 2020.3 マニュアル
https://docs.unity3d[...]
[34]
웹사이트
Unity 5.0 - Manual: Writing vertex and fragment shaders
https://docs.unity3d[...]
[35]
웹사이트
Unity 5.0 - Manual: Compute Shaders
https://docs.unity3d[...]
[36]
웹사이트
コンピュートシェーダー - Unity 2017.4 マニュアル
https://docs.unity3d[...]
[37]
웹사이트
Microsoft/DirectXShaderCompiler: This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang.
https://github.com/M[...]
[38]
웹사이트
DirectXShaderCompiler/DXIL.rst at main · microsoft/DirectXShaderCompiler · GitHub
https://github.com/m[...]
[39]
웹사이트
ShaderEffect クラス (System.Windows.Media.Effects)
http://msdn.microsof[...]
[40]
웹사이트
ShaderEffect クラス (System.Windows.Media.Effects)
https://msdn.microso[...]
[41]
웹사이트
WPF Version 4 の新機能
https://msdn.microso[...]
[42]
웹사이트
Effects (Windows)
https://msdn.microso[...]
[43]
웹사이트
シェーダー モデルとシェーダー プロファイル
http://msdn.microsof[...]
[44]
웹사이트
Direct3D 10 でのシェーダーの使用
https://msdn.microso[...]
[45]
웹사이트
3Dグラフィックス・マニアックス (4) GPUとシェーダ技術の基礎知識(4) | マイナビニュース
http://news.mynavi.j[...]
[46]
웹사이트
【4Gamer.net】[特集]ATIとNVIDIAが語る2005&2006年 ATI編
https://www.4gamer.n[...]
[47]
웹사이트
テッセレーション (Direct3D 9)
https://msdn.microso[...]
[48]
웹사이트
4Gamer.net AMD,コードネーム「R600」こと「ATI Radeon HD 2000」を発表
https://www.4gamer.n[...]
[49]
웹사이트
[連載][西川善司の3Dゲームエクスタシー]「ATI Radeon HD 2000」シリーズのGPUアーキテクチャ徹底解説
https://www.4gamer.n[...]
[50]
웹사이트
Game Developers Conference(GDC) 2010現地レポート - GAME Watch
https://game.watch.i[...]
[51]
문서
PDC 2008: メインストリーム アプリケーション向け Direct3D10
http://download.micr[...]
Microsoft Corporation
2008-10
[52]
웹사이트
D3D_FEATURE_LEVEL enumeration
http://msdn.microsof[...]
[53]
웹사이트
Direct3D feature levels
http://msdn.microsof[...]
[54]
웹사이트
ダウンレベルのハードウェア上の Direct3D 11
http://msdn.microsof[...]
[55]
웹사이트
10Level9 リファレンス
http://msdn.microsof[...]
[56]
웹사이트
Shader Model 5.1
https://msdn.microso[...]
[57]
웹사이트
HLSL Shader Model 5.1 Features for Direct3D 12
https://msdn.microso[...]
[58]
웹사이트
Hardware Feature Levels
https://msdn.microso[...]
[59]
문서
Shader Model 3.0
ftp://download.nvidi[...]
NVIDIA Developer Technology Group
2004
[60]
문서
The Direct3D 10 System
https://www.cs.cmu.e[...]
Microsoft Corporation
2006
[61]
문서
Shader Model 3.0 Unleashed
ftp://download.nvidi[...]
NVIDIA Developer Technology Group
[62]
웹사이트
テクスチャー オブジェクト (DirectX HLSL)
https://msdn.microso[...]
[63]
웹사이트
西川善司の3DゲームファンのためのE3最新ハードウェア講座
https://game.watch.i[...]
Impress Watch
2011-06-11
[64]
웹사이트
西川善司の3Dゲームファンのための「プレイステーション 4」グラフィックス」講座(後編)
https://game.watch.i[...]
Impress Watch
2013-03-08
[65]
웹인용
Fusion Industries :: Cg and HLSL FAQ ::
http://www.fusionind[...]
2012-08-24
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com